Skip to content

[Feat] 약관 다국어 처리 적용#228

Merged
eraser502 merged 3 commits intodevelopfrom
feat/#227-terms-i18n
Apr 1, 2026
Merged

[Feat] 약관 다국어 처리 적용#228
eraser502 merged 3 commits intodevelopfrom
feat/#227-terms-i18n

Conversation

@eraser502
Copy link
Copy Markdown
Collaborator

@eraser502 eraser502 commented Apr 1, 2026

Related issue 🛠

Work Description 📝

  • 기존 약관에 다국어 처리를 하기 위해서 번역테이블을 추가하고 다국어 구조를 지원하도록 변경하였어요.

ScreenShots 📷

To Reviewers 📢

Summary by CodeRabbit

주요 변경사항

  • 새로운 기능
    • 약관 및 이용조건에 대한 다국어 지원이 추가되었습니다. 사용자는 시스템 언어 설정에 따라 해당 언어로 약관을 조회할 수 있으며, 지원하지 않는 언어의 경우 기본 언어로 자동 제공됩니다. 이를 통해 글로벌 사용자 경험이 개선되었습니다.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 1, 2026

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

약관 엔티티에서 titlecontent 필드를 제거하고, 다국어 번역 데이터를 관리하기 위해 새로운 TermTranslation 엔티티를 도입했습니다. 서비스 계층에서 언어 기반 번역을 로드하고 선택하는 로직을 추가했습니다.

Changes

Cohort / File(s) Summary
Entity & Repository Refactoring
src/main/java/org/sopt/kareer/domain/term/entity/Term.java
titlecontent 필드 제거 (6줄 감소)
Multi-language Translation Support
src/main/java/org/sopt/kareer/domain/term/entity/TermTranslation.java, src/main/java/org/sopt/kareer/domain/term/repository/TermTranslationRepository.java
새로운 TermTranslation JPA 엔티티 추가 (term_id, language_code 복합 고유 제약), TermTranslationRepository에서 findAllByTerm_IdInAndLanguageCode() 쿼리 메서드 구현
Service Layer & DTO Updates
src/main/java/org/sopt/kareer/domain/term/service/TermService.java, src/main/java/org/sopt/kareer/domain/term/dto/response/TermsResponse.java
getTerms()를 언어 우선순위 기반 번역 로드로 개선, LocaleContextHolder를 통한 언어 코드 해석, 팩토리 메서드 서명 변경 (from()of(Term, String, String))

Sequence Diagram(s)

sequenceDiagram
    actor Client
    participant TermService
    participant LocaleContextHolder
    participant TermRepository
    participant TermTranslationRepository
    participant TermsResponse

    Client->>TermService: getTerms()
    TermService->>LocaleContextHolder: 언어 코드 조회<br/>(full tag, base lang, "ko")
    LocaleContextHolder-->>TermService: 우선순위 언어 목록
    TermService->>TermRepository: getActiveTerms()
    TermRepository-->>TermService: 활성 Term 목록
    
    alt 활성 약관 없음
        TermService-->>Client: 빈 TermsResponse
    else 활성 약관 있음
        TermService->>TermTranslationRepository: findAllByTerm_IdInAndLanguageCode<br/>(termIds, 우선순위 언어들)
        TermTranslationRepository-->>TermService: TermTranslation 레코드들
        TermService->>TermService: 언어별/termId별 그룹화<br/>우선순위 번역 선택<br/>(미존재 시 빈 값 fallback)
        TermService->>TermsResponse: TermResponse.of()<br/>(term, title, content)
        TermsResponse-->>Client: 다국어 번역이 포함된<br/>TermsResponse
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • [Feat] 탈퇴 API 수정 #220 #221: 번역 저장소의 삭제 메서드 추가로 회원 삭제 시 관련 번역 데이터 정리를 지원하며, 본 PR의 TermTranslation 엔티티 및 저장소와 다국어 번역 기능을 보완합니다.

Suggested reviewers

  • hyomee2
  • jeong1112

Poem

🐰 약관도 여러 언어로 반겯네요!
새로운 TermTranslation이 번역을 쏙쏙!
Term은 가볍게, 다국어는 우아하게,
LocaleHolder가 언어를 척척 고르고,
번역 데이터는 체계적으로 정렬돼요! 🌍✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목이 주요 변경사항인 약관 다국어 처리 구현을 명확하게 요약하고 있어 콘텐츠와 일치합니다.
Linked Issues check ✅ Passed 연관 이슈 #227의 목표인 약관 다국어 처리 적용이 새로운 TermTranslation 엔티티, 리포지토리, 서비스 로직으로 구현되어 요구사항을 충족합니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 약관 다국어 처리 구현과 직접 관련되어 있으며 범위를 벗어난 변경사항이 없습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/#227-terms-i18n

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@eraser502 eraser502 merged commit c1bf24b into develop Apr 1, 2026
1 of 2 checks passed
@eraser502 eraser502 deleted the feat/#227-terms-i18n branch April 1, 2026 13:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 약관 다국어 처리 적용

1 participant